package com.diandiji.demo.config;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.diandiji.demo.entity.User;
import java.util.Date;

public class JwtConfig {
    // JWT 密钥(密钥=root)
    private static final String SECRET = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiIsImFkbWluIjp0cnVlfQ.pPwY5H337Wu_IqxPxK3Ao-F_xsPKyrpCco0TwLnLqVw";

    // Token 有效期（单位：毫秒，示例为 7 天）
    private static final long EXPIRATION = 7 * 24 * 60 * 60 * 1000L;

    // 生成 Token
    public static String generateToken(User user) {
        return JWT.create()
                .withClaim("userId", user.getUserID())  // 自定义声明：用户 ID
                .withExpiresAt(new Date(System.currentTimeMillis() + EXPIRATION))  // 过期时间
                .sign(Algorithm.HMAC256(SECRET));  // 签名算法
    }

    // 解析 Token
    public static DecodedJWT verifyToken(String token) {
        return JWT.require(Algorithm.HMAC256(SECRET))
                .build()
                .verify(token);
    }
}
